/*
 tableExport.jquery.plugin

 Version 1.10.19

 Copyright (c) 2015-2020 hhurz, https://github.com/hhurz/tableExport.jquery.plugin

 Based on https://github.com/kayalshri/tableExport.jquery.plugin

 Licensed under the MIT License
*/
var $jscomp = $jscomp || {};
$jscomp.scope = {};
$jscomp.findInternal = function (c, k, y) {
    c instanceof String && (c = String(c));
    for (var v = c.length, A = 0; A < v; A++) {
        var S = c[A];
        if (k.call(y, S, A, c)) return {i: A, v: S}
    }
    return {i: -1, v: void 0}
};
$jscomp.ASSUME_ES5 = !1;
$jscomp.ASSUME_NO_NATIVE_MAP = !1;
$jscomp.ASSUME_NO_NATIVE_SET = !1;
$jscomp.defineProperty = $jscomp.ASSUME_ES5 || "function" == typeof Object.defineProperties ? Object.defineProperty : function (c, k, y) {
    c != Array.prototype && c != Object.prototype && (c[k] = y.value)
};
$jscomp.getGlobal = function (c) {
    return "undefined" != typeof window && window === c ? c : "undefined" != typeof global && null != global ? global : c
};
$jscomp.global = $jscomp.getGlobal(this);
$jscomp.polyfill = function (c, k, y, v) {
    if (k) {
        y = $jscomp.global;
        c = c.split(".");
        for (v = 0; v < c.length - 1; v++) {
            var A = c[v];
            A in y || (y[A] = {});
            y = y[A]
        }
        c = c[c.length - 1];
        v = y[c];
        k = k(v);
        k != v && null != k && $jscomp.defineProperty(y, c, {configurable: !0, writable: !0, value: k})
    }
};
$jscomp.polyfill("Array.prototype.find", function (c) {
    return c ? c : function (c, y) {
        return $jscomp.findInternal(this, c, y).v
    }
}, "es6", "es3");
(function (c) {
    c.fn.tableExport = function (k) {
        function y(b) {
            var d = [];
            A(b, "thead").each(function () {
                d.push.apply(d, A(c(this), a.theadSelector).toArray())
            });
            return d
        }

        function v(b) {
            var d = [];
            A(b, "tbody").each(function () {
                d.push.apply(d, A(c(this), a.tbodySelector).toArray())
            });
            a.tfootSelector.length && A(b, "tfoot").each(function () {
                d.push.apply(d, A(c(this), a.tfootSelector).toArray())
            });
            return d
        }

        function A(b, a) {
            var d = b[0].tagName, p = b.parents(d).length;
            return b.find(a).filter(function () {
                return p === c(this).closest(d).parents(d).length
            })
        }

        function S(b) {
            var a = [];
            c(b).find("thead").first().find("th").each(function (b, d) {
                void 0 !== c(d).attr("data-field") ? a[b] = c(d).attr("data-field") : a[b] = b.toString()
            });
            return a
        }

        function I(b) {
            var a = "undefined" !== typeof b[0].rowIndex, e = !1 === a && "undefined" !== typeof b[0].cellIndex,
                p = e || a ? Ja(b) : b.is(":visible"), f = b.attr("data-tableexport-display");
            e && "none" !== f && "always" !== f && (b = c(b[0].parentNode), a = "undefined" !== typeof b[0].rowIndex, f = b.attr("data-tableexport-display"));
            a && "none" !== f && "always" !== f && (f = b.closest("table").attr("data-tableexport-display"));
            return "none" !== f && (!0 === p || "always" === f)
        }

        function Ja(b) {
            var a = [];
            V && (a = J.filter(function () {
                var a = !1;
                this.nodeType === b[0].nodeType && ("undefined" !== typeof this.rowIndex && this.rowIndex === b[0].rowIndex ? a = !0 : "undefined" !== typeof this.cellIndex && this.cellIndex === b[0].cellIndex && "undefined" !== typeof this.parentNode.rowIndex && "undefined" !== typeof b[0].parentNode.rowIndex && this.parentNode.rowIndex === b[0].parentNode.rowIndex && (a = !0));
                return a
            }));
            return !1 === V || 0 === a.length
        }

        function sa(b, d, e) {
            var p = !1;
            I(b) ? 0 <
                a.ignoreColumn.length && (-1 !== c.inArray(e, a.ignoreColumn) || -1 !== c.inArray(e - d, a.ignoreColumn) || T.length > e && "undefined" !== typeof T[e] && -1 !== c.inArray(T[e], a.ignoreColumn)) && (p = !0) : p = !0;
            return p
        }

        function B(b, d, e, p, f) {
            if ("function" === typeof f) {
                var l = !1;
                "function" === typeof a.onIgnoreRow && (l = a.onIgnoreRow(c(b), e));
                if (!1 === l && (0 === a.ignoreRow.length || -1 === c.inArray(e, a.ignoreRow) && -1 === c.inArray(e - p, a.ignoreRow)) && I(c(b))) {
                    var q = A(c(b), d), h = 0;
                    q.each(function (b) {
                        var a = c(this), d, l = O(this), p = U(this);
                        c.each(G,
                            function () {
                                if (e >= this.s.r && e <= this.e.r && h >= this.s.c && h <= this.e.c) for (d = 0; d <= this.e.c - this.s.c; ++d) f(null, e, h++)
                            });
                        if (!1 === sa(a, q.length, b)) {
                            if (p || l) l = l || 1, G.push({s: {r: e, c: h}, e: {r: e + (p || 1) - 1, c: h + l - 1}});
                            f(this, e, h++)
                        }
                        if (l) for (d = 0; d < l - 1; ++d) f(null, e, h++)
                    });
                    c.each(G, function () {
                        if (e >= this.s.r && e <= this.e.r && h >= this.s.c && h <= this.e.c) for (da = 0; da <= this.e.c - this.s.c; ++da) f(null, e, h++)
                    })
                }
            }
        }

        function ta(b, a, e, c) {
            if ("undefined" !== typeof c.images && (e = c.images[e], "undefined" !== typeof e)) {
                a = a.getBoundingClientRect();
                var d = b.width / b.height, l = a.width / a.height, p = b.width, h = b.height, z = 19.049976 / 25.4,
                    g = 0;
                l <= d ? (h = Math.min(b.height, a.height), p = a.width * h / a.height) : l > d && (p = Math.min(b.width, a.width), h = a.height * p / a.width);
                p *= z;
                h *= z;
                h < b.height && (g = (b.height - h) / 2);
                try {
                    c.doc.addImage(e.src, b.textPos.x, b.y + g, p, h)
                } catch (Pa) {
                }
                b.textPos.x += p
            }
        }

        function ua(b, d) {
            if ("string" === a.outputMode) return b.output();
            if ("base64" === a.outputMode) return K(b.output());
            if ("window" === a.outputMode) window.URL = window.URL || window.webkitURL, window.open(window.URL.createObjectURL(b.output("blob")));
            else try {
                var e = b.output("blob");
                saveAs(e, a.fileName + ".pdf")
            } catch (p) {
                ja(a.fileName + ".pdf", "data:application/pdf" + (d ? "" : ";base64") + ",", d ? b.output("blob") : b.output())
            }
        }

        function va(b, a, e) {
            var d = 0;
            "undefined" !== typeof e && (d = e.colspan);
            if (0 <= d) {
                for (var f = b.width, c = b.textPos.x, q = a.table.columns.indexOf(a.column), h = 1; h < d; h++) f += a.table.columns[q + h].width;
                1 < d && ("right" === b.styles.halign ? c = b.textPos.x + f - b.width : "center" === b.styles.halign && (c = b.textPos.x + (f - b.width) / 2));
                b.width = f;
                b.textPos.x = c;
                "undefined" !==
                typeof e && 1 < e.rowspan && (b.height *= e.rowspan);
                if ("middle" === b.styles.valign || "bottom" === b.styles.valign) e = ("string" === typeof b.text ? b.text.split(/\r\n|\r|\n/g) : b.text).length || 1, 2 < e && (b.textPos.y -= (2 - 1.15) / 2 * a.row.styles.fontSize * (e - 2) / 3);
                return !0
            }
            return !1
        }

        function wa(b, a, e) {
            "undefined" !== typeof b && null !== b && (b.hasAttribute("data-tableexport-canvas") ? (a = (new Date).getTime(), c(b).attr("data-tableexport-canvas", a), e.images[a] = {
                url: '[data-tableexport-canvas="' + a + '"]',
                src: null
            }) : "undefined" !== a && null !=
                a && a.each(function () {
                    if (c(this).is("img")) {
                        var a = xa(this.src);
                        e.images[a] = {url: this.src, src: this.src}
                    }
                    wa(b, c(this).children(), e)
                }))
        }

        function Ka(b, a) {
            function d(b) {
                if (b.url) if (b.src) {
                    var d = new Image;
                    p = ++f;
                    d.crossOrigin = "Anonymous";
                    d.onerror = d.onload = function () {
                        if (d.complete && (0 === d.src.indexOf("data:image/") && (d.width = b.width || d.width || 0, d.height = b.height || d.height || 0), d.width + d.height)) {
                            var e = document.createElement("canvas"), c = e.getContext("2d");
                            e.width = d.width;
                            e.height = d.height;
                            c.drawImage(d, 0, 0);
                            b.src = e.toDataURL("image/png")
                        }
                        --f || a(p)
                    };
                    d.src = b.url
                } else {
                    var e = c(b.url);
                    e.length && (p = ++f, html2canvas(e[0]).then(function (d) {
                        b.src = d.toDataURL("image/png");
                        --f || a(p)
                    }))
                }
            }

            var p = 0, f = 0;
            if ("undefined" !== typeof b.images) for (var l in b.images) b.images.hasOwnProperty(l) && d(b.images[l]);
            (b = f) || (a(p), b = void 0);
            return b
        }

        function ya(b, d, e) {
            d.each(function () {
                if (c(this).is("div")) {
                    var d = ea(L(this, "background-color"), [255, 255, 255]),
                        f = ea(L(this, "border-top-color"), [0, 0, 0]), l = fa(this, "border-top-width", a.jspdf.unit),
                        q = this.getBoundingClientRect(), h = this.offsetLeft * e.wScaleFactor,
                        z = this.offsetTop * e.hScaleFactor, g = q.width * e.wScaleFactor;
                    q = q.height * e.hScaleFactor;
                    e.doc.setDrawColor.apply(void 0, f);
                    e.doc.setFillColor.apply(void 0, d);
                    e.doc.setLineWidth(l);
                    e.doc.rect(b.x + h, b.y + z, g, q, l ? "FD" : "F")
                } else c(this).is("img") && (d = xa(this.src), ta(b, this, d, e));
                ya(b, c(this).children(), e)
            })
        }

        function za(b, d, e) {
            if ("function" === typeof e.onAutotableText) e.onAutotableText(e.doc, b, d); else {
                var p = b.textPos.x, f = b.textPos.y, l = {
                    halign: b.styles.halign,
                    valign: b.styles.valign
                };
                if (d.length) {
                    for (d = d[0]; d.previousSibling;) d = d.previousSibling;
                    for (var q = !1, h = !1; d;) {
                        var z = d.innerText || d.textContent || "", g = z.length && " " === z[0] ? " " : "",
                            k = 1 < z.length && " " === z[z.length - 1] ? " " : "";
                        !0 !== a.preserve.leadingWS && (z = g + ka(z));
                        !0 !== a.preserve.trailingWS && (z = la(z) + k);
                        c(d).is("br") && (p = b.textPos.x, f += e.doc.internal.getFontSize());
                        c(d).is("b") ? q = !0 : c(d).is("i") && (h = !0);
                        (q || h) && e.doc.setFontType(q && h ? "bolditalic" : q ? "bold" : "italic");
                        if (g = e.doc.getStringUnitWidth(z) * e.doc.internal.getFontSize()) {
                            "linebreak" ===
                            b.styles.overflow && p > b.textPos.x && p + g > b.textPos.x + b.width && (0 <= ".,!%*;:=-".indexOf(z.charAt(0)) && (k = z.charAt(0), g = e.doc.getStringUnitWidth(k) * e.doc.internal.getFontSize(), p + g <= b.textPos.x + b.width && (e.doc.autoTableText(k, p, f, l), z = z.substring(1, z.length)), g = e.doc.getStringUnitWidth(z) * e.doc.internal.getFontSize()), p = b.textPos.x, f += e.doc.internal.getFontSize());
                            if ("visible" !== b.styles.overflow) for (; z.length && p + g > b.textPos.x + b.width;) z = z.substring(0, z.length - 1), g = e.doc.getStringUnitWidth(z) * e.doc.internal.getFontSize();
                            e.doc.autoTableText(z, p, f, l);
                            p += g
                        }
                        if (q || h) c(d).is("b") ? q = !1 : c(d).is("i") && (h = !1), e.doc.setFontType(q || h ? q ? "bold" : "italic" : "normal");
                        d = d.nextSibling
                    }
                    b.textPos.x = p;
                    b.textPos.y = f
                } else e.doc.autoTableText(b.text, b.textPos.x, b.textPos.y, l)
            }
        }

        function W(b, a, e) {
            return null == b ? "" : b.toString().replace(new RegExp(null == a ? "" : a.toString().replace(/([.*+?^=!:${}()|\[\]\/\\])/g, "\\$1"), "g"), e)
        }

        function ka(b) {
            return null == b ? "" : b.toString().replace(/^\s+/, "")
        }

        function la(b) {
            return null == b ? "" : b.toString().replace(/\s+$/,
                "")
        }

        function La(b) {
            a.date.pattern.lastIndex = 0;
            var d = a.date.pattern.exec(b);
            if (null == d) return !1;
            b = +d[a.date.match_y];
            if (0 > b || 8099 < b) return !1;
            var e = 1 * d[a.date.match_m];
            d = 1 * d[a.date.match_d];
            if (!isFinite(d)) return !1;
            var c = new Date(b, e - 1, d, 0, 0, 0);
            return c.getFullYear() === b && c.getMonth() === e - 1 && c.getDate() === d ? new Date(Date.UTC(b, e - 1, d, 0, 0, 0)) : !1
        }

        function ma(b) {
            b = b || "0";
            "" !== a.numbers.html.thousandsSeparator && (b = W(b, a.numbers.html.thousandsSeparator, ""));
            "." !== a.numbers.html.decimalMark && (b = W(b, a.numbers.html.decimalMark,
                "."));
            return "number" === typeof b || !1 !== jQuery.isNumeric(b) ? b : !1
        }

        function Ma(b) {
            -1 < b.indexOf("%") ? (b = ma(b.replace(/%/g, "")), !1 !== b && (b /= 100)) : b = !1;
            return b
        }

        function E(b, d, e, p) {
            var f = "", l = "text";
            if (null !== b) {
                var q = c(b);
                q.removeData("teUserDefText");
                if (q[0].hasAttribute("data-tableexport-canvas")) var h = ""; else if (q[0].hasAttribute("data-tableexport-value")) h = (h = q.attr("data-tableexport-value")) ? h + "" : "", q.data("teUserDefText", 1); else if (h = q.html(), "function" === typeof a.onCellHtmlData) h = a.onCellHtmlData(q,
                    d, e, h), q.data("teUserDefText", 1); else if ("" !== h) {
                    b = c.parseHTML(h);
                    var g = 0, k = 0;
                    h = "";
                    c.each(b, function () {
                        if (c(this).is("input")) h += q.find("input").eq(g++).val(); else if (c(this).is("select")) h += q.find("select option:selected").eq(k++).text(); else if (c(this).is("br")) h += "<br>"; else {
                            if ("undefined" === typeof c(this).html()) h += c(this).text(); else if (void 0 === jQuery().bootstrapTable || !1 === c(this).hasClass("fht-cell") && !1 === c(this).hasClass("filterControl") && 0 === q.parents(".detail-view").length) h += c(this).html();
                            if (c(this).is("a")) {
                                var b = q.find("a").attr("href") || "";
                                f = "function" === typeof a.onCellHtmlHyperlink ? f + a.onCellHtmlHyperlink(q, d, e, b, h) : "href" === a.htmlHyperlink ? f + b : f + h;
                                h = ""
                            }
                        }
                    })
                }
                if (h && "" !== h && !0 === a.htmlContent) f = c.trim(h); else if (h && "" !== h) if ("" !== q.attr("data-tableexport-cellformat")) {
                    var m = h.replace(/\n/g, "\u2028").replace(/(<\s*br([^>]*)>)/gi, "\u2060"),
                        n = c("<div/>").html(m).contents();
                    b = !1;
                    m = "";
                    c.each(n.text().split("\u2028"), function (b, d) {
                        0 < b && (m += " ");
                        !0 !== a.preserve.leadingWS && (d = ka(d));
                        m += !0 !==
                        a.preserve.trailingWS ? la(d) : d
                    });
                    c.each(m.split("\u2060"), function (b, d) {
                        0 < b && (f += "\n");
                        !0 !== a.preserve.leadingWS && (d = ka(d));
                        !0 !== a.preserve.trailingWS && (d = la(d));
                        f += d.replace(/\u00AD/g, "")
                    });
                    f = f.replace(/\u00A0/g, " ");
                    if ("json" === a.type || "excel" === a.type && "xmlss" === a.mso.fileFormat || !1 === a.numbers.output) b = ma(f), !1 !== b && (l = "number", f = Number(b)); else if (a.numbers.html.decimalMark !== a.numbers.output.decimalMark || a.numbers.html.thousandsSeparator !== a.numbers.output.thousandsSeparator) if (b = ma(f), !1 !==
                    b) {
                        n = ("" + b.substr(0 > b ? 1 : 0)).split(".");
                        1 === n.length && (n[1] = "");
                        var t = 3 < n[0].length ? n[0].length % 3 : 0;
                        l = "number";
                        f = (0 > b ? "-" : "") + (a.numbers.output.thousandsSeparator ? (t ? n[0].substr(0, t) + a.numbers.output.thousandsSeparator : "") + n[0].substr(t).replace(/(\d{3})(?=\d)/g, "$1" + a.numbers.output.thousandsSeparator) : n[0]) + (n[1].length ? a.numbers.output.decimalMark + n[1] : "")
                    }
                } else f = h;
                !0 === a.escape && (f = escape(f));
                "function" === typeof a.onCellData && (f = a.onCellData(q, d, e, f, l), q.data("teUserDefText", 1))
            }
            void 0 !== p && (p.type =
                l);
            return f
        }

        function Aa(b) {
            return 0 < b.length && !0 === a.preventInjection && 0 <= "=+-@".indexOf(b.charAt(0)) ? "'" + b : b
        }

        function Na(b, a, e) {
            return a + "-" + e.toLowerCase()
        }

        function ea(b, a) {
            (b = /^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/.exec(b)) && (a = [parseInt(b[1]), parseInt(b[2]), parseInt(b[3])]);
            return a
        }

        function Ba(b) {
            var a = L(b, "text-align"), e = L(b, "font-weight"), c = L(b, "font-style"), f = "";
            "start" === a && (a = "rtl" === L(b, "direction") ? "right" : "left");
            700 <= e && (f = "bold");
            "italic" === c && (f += c);
            "" === f && (f = "normal");
            a = {
                style: {
                    align: a,
                    bcolor: ea(L(b, "background-color"), [255, 255, 255]),
                    color: ea(L(b, "color"), [0, 0, 0]),
                    fstyle: f
                }, colspan: O(b), rowspan: U(b)
            };
            null !== b && (b = b.getBoundingClientRect(), a.rect = {width: b.width, height: b.height});
            return a
        }

        function O(b) {
            var a = c(b).attr("data-tableexport-colspan");
            "undefined" === typeof a && c(b).is("[colspan]") && (a = c(b).attr("colspan"));
            return parseInt(a) || 0
        }

        function U(b) {
            var a = c(b).attr("data-tableexport-rowspan");
            "undefined" === typeof a && c(b).is("[rowspan]") && (a = c(b).attr("rowspan"));
            return parseInt(a) ||
                0
        }

        function L(b, a) {
            try {
                return window.getComputedStyle ? (a = a.replace(/([a-z])([A-Z])/, Na), window.getComputedStyle(b, null).getPropertyValue(a)) : b.currentStyle ? b.currentStyle[a] : b.style[a]
            } catch (e) {
            }
            return ""
        }

        function fa(a, d, e) {
            d = L(a, d).match(/\d+/);
            if (null !== d) {
                d = d[0];
                a = a.parentElement;
                var b = document.createElement("div");
                b.style.overflow = "hidden";
                b.style.visibility = "hidden";
                a.appendChild(b);
                b.style.width = 100 + e;
                e = 100 / b.offsetWidth;
                a.removeChild(b);
                return d * e
            }
            return 0
        }

        function Oa(a) {
            for (var b = new ArrayBuffer(a.length),
                     e = new Uint8Array(b), c = 0; c !== a.length; ++c) e[c] = a.charCodeAt(c) & 255;
            return b
        }

        function na(a) {
            var b = a.c, e = "";
            for (++b; b; b = Math.floor((b - 1) / 26)) e = String.fromCharCode((b - 1) % 26 + 65) + e;
            return e + ("" + (a.r + 1))
        }

        function oa(a, d) {
            if ("undefined" === typeof d || "number" === typeof d) return oa(a.s, a.e);
            "string" !== typeof a && (a = na(a));
            "string" !== typeof d && (d = na(d));
            return a === d ? a : a + ":" + d
        }

        function Ca(a, d) {
            var b = Number(a);
            if (isFinite(b)) return b;
            var c = 1;
            "" !== d.thousandsSeparator && (a = a.replace(new RegExp("([\\d])" + d.thousandsSeparator +
                "([\\d])", "g"), "$1$2"));
            "." !== d.decimalMark && (a = a.replace(new RegExp("([\\d])" + d.decimalMark + "([\\d])", "g"), "$1.$2"));
            a = a.replace(/[$]/g, "").replace(/[%]/g, function () {
                c *= 100;
                return ""
            });
            if (isFinite(b = Number(a))) return b / c;
            a = a.replace(/[(](.*)[)]/, function (a, b) {
                c = -c;
                return b
            });
            return isFinite(b = Number(a)) ? b / c : b
        }

        function xa(a) {
            var b = 0, c;
            if (0 === a.length) return b;
            var p = 0;
            for (c = a.length; p < c; p++) {
                var f = a.charCodeAt(p);
                b = (b << 5) - b + f;
                b |= 0
            }
            return b
        }

        function M(b, d, c, p, f, l) {
            var e = !0;
            "function" === typeof a.onBeforeSaveToFile &&
            (e = a.onBeforeSaveToFile(b, d, c, p, f), "boolean" !== typeof e && (e = !0));
            if (e) try {
                if (Da = new Blob([b], {type: c + ";charset=" + p}), saveAs(Da, d, !1 === l), "function" === typeof a.onAfterSaveToFile) a.onAfterSaveToFile(b, d)
            } catch (h) {
                ja(d, "data:" + c + (p.length ? ";charset=" + p : "") + (f.length ? ";" + f : "") + ",", l ? "\ufeff" + b : b)
            }
        }

        function ja(b, d, c) {
            var e = window.navigator.userAgent;
            if (!1 !== b && window.navigator.msSaveOrOpenBlob) window.navigator.msSaveOrOpenBlob(new Blob([c]), b); else if (!1 !== b && (0 < e.indexOf("MSIE ") || e.match(/Trident.*rv\:11\./))) {
                if (d =
                    document.createElement("iframe")) {
                    document.body.appendChild(d);
                    d.setAttribute("style", "display:none");
                    d.contentDocument.open("txt/plain", "replace");
                    d.contentDocument.write(c);
                    d.contentDocument.close();
                    d.contentWindow.focus();
                    switch (b.substr(b.lastIndexOf(".") + 1)) {
                        case "doc":
                        case "json":
                        case "png":
                        case "pdf":
                        case "xls":
                        case "xlsx":
                            b += ".txt"
                    }
                    d.contentDocument.execCommand("SaveAs", !0, b);
                    document.body.removeChild(d)
                }
            } else {
                var f = document.createElement("a");
                if (f) {
                    var l = null;
                    f.style.display = "none";
                    !1 !==
                    b ? f.download = b : f.target = "_blank";
                    "object" === typeof c ? (window.URL = window.URL || window.webkitURL, e = [], e.push(c), l = window.URL.createObjectURL(new Blob(e, {type: d})), f.href = l) : 0 <= d.toLowerCase().indexOf("base64,") ? f.href = d + K(c) : f.href = d + encodeURIComponent(c);
                    document.body.appendChild(f);
                    if (document.createEvent) null === ha && (ha = document.createEvent("MouseEvents")), ha.initEvent("click", !0, !1), f.dispatchEvent(ha); else if (document.createEventObject) f.fireEvent("onclick"); else if ("function" === typeof f.onclick) f.onclick();
                    setTimeout(function () {
                        l && window.URL.revokeObjectURL(l);
                        document.body.removeChild(f);
                        if ("function" === typeof a.onAfterSaveToFile) a.onAfterSaveToFile(c, b)
                    }, 100)
                }
            }
        }

        function K(a) {
            var b, c = "", p = 0;
            if ("string" === typeof a) {
                a = a.replace(/\x0d\x0a/g, "\n");
                var f = "";
                for (b = 0; b < a.length; b++) {
                    var l = a.charCodeAt(b);
                    128 > l ? f += String.fromCharCode(l) : (127 < l && 2048 > l ? f += String.fromCharCode(l >> 6 | 192) : (f += String.fromCharCode(l >> 12 | 224), f += String.fromCharCode(l >> 6 & 63 | 128)), f += String.fromCharCode(l & 63 | 128))
                }
                a = f
            }
            for (; p < a.length;) {
                var q =
                    a.charCodeAt(p++);
                f = a.charCodeAt(p++);
                b = a.charCodeAt(p++);
                l = q >> 2;
                q = (q & 3) << 4 | f >> 4;
                var h = (f & 15) << 2 | b >> 6;
                var g = b & 63;
                isNaN(f) ? h = g = 64 : isNaN(b) && (g = 64);
                c = c + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(l) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(q) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(h) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".charAt(g)
            }
            return c
        }

        var a = {
            csvEnclosure: '"',
            csvSeparator: ",",
            csvUseBOM: !0,
            date: {html: "dd/mm/yyyy"},
            displayTableName: !1,
            escape: !1,
            exportHiddenCells: !1,
            fileName: "tableExport",
            htmlContent: !1,
            htmlHyperlink: "content",
            ignoreColumn: [],
            ignoreRow: [],
            jsonScope: "all",
            jspdf: {
                orientation: "p",
                unit: "pt",
                format: "a4",
                margins: {left: 20, right: 10, top: 10, bottom: 10},
                onDocCreated: null,
                autotable: {
                    styles: {
                        cellPadding: 2,
                        rowHeight: 12,
                        fontSize: 8,
                        fillColor: 255,
                        textColor: 50,
                        fontStyle: "normal",
                        overflow: "ellipsize",
                        halign: "inherit",
                        valign: "middle"
                    },
                    headerStyles: {
                        fillColor: [52, 73, 94], textColor: 255,
                        fontStyle: "bold", halign: "inherit", valign: "middle"
                    },
                    alternateRowStyles: {fillColor: 245},
                    tableExport: {
                        doc: null,
                        onAfterAutotable: null,
                        onBeforeAutotable: null,
                        onAutotableText: null,
                        onTable: null,
                        outputImages: !0
                    }
                }
            },
            mso: {
                fileFormat: "xlshtml",
                onMsoNumberFormat: null,
                pageFormat: "a4",
                pageOrientation: "portrait",
                rtl: !1,
                styles: [],
                worksheetName: "",
                xslx: {formatId: {date: 14, numbers: 2}}
            },
            numbers: {
                html: {decimalMark: ".", thousandsSeparator: ","},
                output: {decimalMark: ".", thousandsSeparator: ","}
            },
            onAfterSaveToFile: null,
            onBeforeSaveToFile: null,
            onCellData: null,
            onCellHtmlData: null,
            onCellHtmlHyperlink: null,
            onIgnoreRow: null,
            onTableExportBegin: null,
            onTableExportEnd: null,
            outputMode: "file",
            pdfmake: {
                enabled: !1,
                docDefinition: {pageOrientation: "portrait", defaultStyle: {font: "Roboto"}},
                fonts: {}
            },
            preserve: {leadingWS: !1, trailingWS: !1},
            preventInjection: !0,
            sql: {tableEnclosure: "`", columnEnclosure: "`"},
            tbodySelector: "tr",
            tfootSelector: "tr",
            theadSelector: "tr",
            tableName: "Table",
            type: "csv"
        }, N = {
            a0: [2383.94, 3370.39],
            a1: [1683.78, 2383.94],
            a2: [1190.55, 1683.78],
            a3: [841.89,
                1190.55],
            a4: [595.28, 841.89],
            a5: [419.53, 595.28],
            a6: [297.64, 419.53],
            a7: [209.76, 297.64],
            a8: [147.4, 209.76],
            a9: [104.88, 147.4],
            a10: [73.7, 104.88],
            b0: [2834.65, 4008.19],
            b1: [2004.09, 2834.65],
            b2: [1417.32, 2004.09],
            b3: [1000.63, 1417.32],
            b4: [708.66, 1000.63],
            b5: [498.9, 708.66],
            b6: [354.33, 498.9],
            b7: [249.45, 354.33],
            b8: [175.75, 249.45],
            b9: [124.72, 175.75],
            b10: [87.87, 124.72],
            c0: [2599.37, 3676.54],
            c1: [1836.85, 2599.37],
            c2: [1298.27, 1836.85],
            c3: [918.43, 1298.27],
            c4: [649.13, 918.43],
            c5: [459.21, 649.13],
            c6: [323.15, 459.21],
            c7: [229.61,
                323.15],
            c8: [161.57, 229.61],
            c9: [113.39, 161.57],
            c10: [79.37, 113.39],
            dl: [311.81, 623.62],
            letter: [612, 792],
            "government-letter": [576, 756],
            legal: [612, 1008],
            "junior-legal": [576, 360],
            ledger: [1224, 792],
            tabloid: [792, 1224],
            "credit-card": [153, 243]
        }, C = this, ha = null, u = [], w = [], n = 0, t = "", T = [], G = [], Da, J = [], V = !1;
        c.extend(!0, a, k);
        "xlsx" === a.type && (a.mso.fileFormat = a.type, a.type = "excel");
        "undefined" !== typeof a.excelFileFormat && "undefined" === a.mso.fileFormat && (a.mso.fileFormat = a.excelFileFormat);
        "undefined" !== typeof a.excelPageFormat &&
        "undefined" === a.mso.pageFormat && (a.mso.pageFormat = a.excelPageFormat);
        "undefined" !== typeof a.excelPageOrientation && "undefined" === a.mso.pageOrientation && (a.mso.pageOrientation = a.excelPageOrientation);
        "undefined" !== typeof a.excelRTL && "undefined" === a.mso.rtl && (a.mso.rtl = a.excelRTL);
        "undefined" !== typeof a.excelstyles && "undefined" === a.mso.styles && (a.mso.styles = a.excelstyles);
        "undefined" !== typeof a.onMsoNumberFormat && "undefined" === a.mso.onMsoNumberFormat && (a.mso.onMsoNumberFormat = a.onMsoNumberFormat);
        "undefined" !==
        typeof a.worksheetName && "undefined" === a.mso.worksheetName && (a.mso.worksheetName = a.worksheetName);
        a.mso.pageOrientation = "l" === a.mso.pageOrientation.substr(0, 1) ? "landscape" : "portrait";
        a.date.html = a.date.html || "";
        if (a.date.html.length) {
            k = [];
            k.dd = "(3[01]|[12][0-9]|0?[1-9])";
            k.mm = "(1[012]|0?[1-9])";
            k.yyyy = "((?:1[6-9]|2[0-2])\\d{2})";
            k.yy = "(\\d{2})";
            var r = a.date.html.match(/[^a-zA-Z0-9]/)[0];
            r = a.date.html.toLowerCase().split(r);
            a.date.regex = "^\\s*";
            a.date.regex += k[r[0]];
            a.date.regex += "(.)";
            a.date.regex +=
                k[r[1]];
            a.date.regex += "\\2";
            a.date.regex += k[r[2]];
            a.date.regex += "\\s*$";
            a.date.pattern = new RegExp(a.date.regex, "g");
            k = r.indexOf("dd") + 1;
            a.date.match_d = k + (1 < k ? 1 : 0);
            k = r.indexOf("mm") + 1;
            a.date.match_m = k + (1 < k ? 1 : 0);
            k = (0 <= r.indexOf("yyyy") ? r.indexOf("yyyy") : r.indexOf("yy")) + 1;
            a.date.match_y = k + (1 < k ? 1 : 0)
        }
        T = S(C);
        if ("function" === typeof a.onTableExportBegin) a.onTableExportBegin();
        if ("csv" === a.type || "tsv" === a.type || "txt" === a.type) {
            var P = "", Z = 0;
            G = [];
            n = 0;
            var pa = function (b, d, e) {
                b.each(function () {
                    t = "";
                    B(this, d, n,
                        e + b.length, function (b, c, d) {
                            var e = t, f = "";
                            if (null !== b) if (b = E(b, c, d), c = null === b || "" === b ? "" : b.toString(), "tsv" === a.type) b instanceof Date && b.toLocaleString(), f = W(c, "\t", " "); else if (b instanceof Date) f = a.csvEnclosure + b.toLocaleString() + a.csvEnclosure; else if (f = Aa(c), f = W(f, a.csvEnclosure, a.csvEnclosure + a.csvEnclosure), 0 <= f.indexOf(a.csvSeparator) || /[\r\n ]/g.test(f)) f = a.csvEnclosure + f + a.csvEnclosure;
                            t = e + (f + ("tsv" === a.type ? "\t" : a.csvSeparator))
                        });
                    t = c.trim(t).substring(0, t.length - 1);
                    0 < t.length && (0 < P.length &&
                    (P += "\n"), P += t);
                    n++
                });
                return b.length
            };
            Z += pa(c(C).find("thead").first().find(a.theadSelector), "th,td", Z);
            A(c(C), "tbody").each(function () {
                Z += pa(A(c(this), a.tbodySelector), "td,th", Z)
            });
            a.tfootSelector.length && pa(c(C).find("tfoot").first().find(a.tfootSelector), "td,th", Z);
            P += "\n";
            if ("string" === a.outputMode) return P;
            if ("base64" === a.outputMode) return K(P);
            if ("window" === a.outputMode) {
                ja(!1, "data:text/" + ("csv" === a.type ? "csv" : "plain") + ";charset=utf-8,", P);
                return
            }
            M(P, a.fileName + "." + a.type, "text/" + ("csv" ===
            a.type ? "csv" : "plain"), "utf-8", "", "csv" === a.type && a.csvUseBOM)
        } else if ("sql" === a.type) {
            n = 0;
            G = [];
            var D = "INSERT INTO " + a.sql.tableEnclosure + a.tableName + a.sql.tableEnclosure + " (";
            u = y(c(C));
            c(u).each(function () {
                B(this, "th,td", n, u.length, function (b, c, e) {
                    b = E(b, c, e) || "";
                    -1 < b.indexOf(a.sql.columnEnclosure) && (b = W(b.toString(), a.sql.columnEnclosure, a.sql.columnEnclosure + a.sql.columnEnclosure));
                    D += a.sql.columnEnclosure + b + a.sql.columnEnclosure + ","
                });
                n++;
                D = c.trim(D).substring(0, D.length - 1)
            });
            D += ") VALUES ";
            w = v(c(C));
            c(w).each(function () {
                t = "";
                B(this, "td,th", n, u.length + w.length, function (a, c, e) {
                    a = E(a, c, e) || "";
                    -1 < a.indexOf("'") && (a = W(a.toString(), "'", "''"));
                    t += "'" + a + "',"
                });
                3 < t.length && (D += "(" + t, D = c.trim(D).substring(0, D.length - 1), D += "),");
                n++
            });
            D = c.trim(D).substring(0, D.length - 1);
            D += ";";
            if ("string" === a.outputMode) return D;
            if ("base64" === a.outputMode) return K(D);
            M(D, a.fileName + ".sql", "application/sql", "utf-8", "", !1)
        } else if ("json" === a.type) {
            var X = [];
            G = [];
            u = y(c(C));
            c(u).each(function () {
                var a = [];
                B(this, "th,td", n, u.length,
                    function (b, c, g) {
                        a.push(E(b, c, g))
                    });
                X.push(a)
            });
            var qa = [];
            w = v(c(C));
            c(w).each(function () {
                var a = {}, d = 0;
                B(this, "td,th", n, u.length + w.length, function (b, c, f) {
                    X.length ? a[X[X.length - 1][d]] = E(b, c, f) : a[d] = E(b, c, f);
                    d++
                });
                !1 === c.isEmptyObject(a) && qa.push(a);
                n++
            });
            k = "head" === a.jsonScope ? JSON.stringify(X) : "data" === a.jsonScope ? JSON.stringify(qa) : JSON.stringify({
                header: X,
                data: qa
            });
            if ("string" === a.outputMode) return k;
            if ("base64" === a.outputMode) return K(k);
            M(k, a.fileName + ".json", "application/json", "utf-8", "base64",
                !1)
        } else if ("xml" === a.type) {
            n = 0;
            G = [];
            var Q = '<?xml version="1.0" encoding="utf-8"?>';
            Q += "<tabledata><fields>";
            u = y(c(C));
            c(u).each(function () {
                B(this, "th,td", n, u.length, function (a, c, e) {
                    Q += "<field>" + E(a, c, e) + "</field>"
                });
                n++
            });
            Q += "</fields><data>";
            var Ea = 1;
            w = v(c(C));
            c(w).each(function () {
                var a = 1;
                t = "";
                B(this, "td,th", n, u.length + w.length, function (b, c, g) {
                    t += "<column-" + a + ">" + E(b, c, g) + "</column-" + a + ">";
                    a++
                });
                0 < t.length && "<column-1></column-1>" !== t && (Q += '<row id="' + Ea + '">' + t + "</row>", Ea++);
                n++
            });
            Q += "</data></tabledata>";
            if ("string" === a.outputMode) return Q;
            if ("base64" === a.outputMode) return K(Q);
            M(Q, a.fileName + ".xml", "application/xml", "utf-8", "base64", !1)
        } else if ("excel" === a.type && "xmlss" === a.mso.fileFormat) {
            var ra = [], F = [];
            c(C).filter(function () {
                return I(c(this))
            }).each(function () {
                function b(a, b, d) {
                    var f = [];
                    c(a).each(function () {
                        var b = 0, e = 0;
                        t = "";
                        B(this, "td,th", n, d + a.length, function (a, d, l) {
                            if (null !== a) {
                                var h = "";
                                d = E(a, d, l);
                                l = "String";
                                if (!1 !== jQuery.isNumeric(d)) l = "Number"; else {
                                    var g = Ma(d);
                                    !1 !== g && (d = g, l = "Number", h += ' ss:StyleID="pct1"')
                                }
                                "Number" !==
                                l && (d = d.replace(/\n/g, "<br>"));
                                g = O(a);
                                a = U(a);
                                c.each(f, function () {
                                    if (n >= this.s.r && n <= this.e.r && e >= this.s.c && e <= this.e.c) for (var a = 0; a <= this.e.c - this.s.c; ++a) e++, b++
                                });
                                if (a || g) a = a || 1, g = g || 1, f.push({
                                    s: {r: n, c: e},
                                    e: {r: n + a - 1, c: e + g - 1}
                                });
                                1 < g && (h += ' ss:MergeAcross="' + (g - 1) + '"', e += g - 1);
                                1 < a && (h += ' ss:MergeDown="' + (a - 1) + '" ss:StyleID="rsp1"');
                                0 < b && (h += ' ss:Index="' + (e + 1) + '"', b = 0);
                                t += "<Cell" + h + '><Data ss:Type="' + l + '">' + c("<div />").text(d).html() + "</Data></Cell>\r";
                                e++
                            }
                        });
                        0 < t.length && (H += '<Row ss:AutoFitHeight="0">\r' +
                            t + "</Row>\r");
                        n++
                    });
                    return a.length
                }

                var d = c(this), e = "";
                "string" === typeof a.mso.worksheetName && a.mso.worksheetName.length ? e = a.mso.worksheetName + " " + (F.length + 1) : "undefined" !== typeof a.mso.worksheetName[F.length] && (e = a.mso.worksheetName[F.length]);
                e.length || (e = d.find("caption").text() || "");
                e.length || (e = "Table " + (F.length + 1));
                e = c.trim(e.replace(/[\\\/[\]*:?'"]/g, "").substring(0, 31));
                F.push(c("<div />").text(e).html());
                !1 === a.exportHiddenCells && (J = d.find("tr, th, td").filter(":hidden"), V = 0 < J.length);
                n = 0;
                T = S(this);
                H = "<Table>\r";
                e = b(y(d), "th,td", 0);
                b(v(d), "td,th", e);
                H += "</Table>\r";
                ra.push(H)
            });
            k = {};
            r = {};
            for (var m, R, Y = 0, da = F.length; Y < da; Y++) m = F[Y], R = k[m], R = k[m] = null == R ? 1 : R + 1, 2 === R && (F[r[m]] = F[r[m]].substring(0, 29) + "-1"), 1 < k[m] ? F[Y] = F[Y].substring(0, 29) + "-" + k[m] : r[m] = Y;
            k = '<?xml version="1.0" encoding="UTF-8"?>\r<?mso-application progid="Excel.Sheet"?>\r<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"\r xmlns:o="urn:schemas-microsoft-com:office:office"\r xmlns:x="urn:schemas-microsoft-com:office:excel"\r xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"\r xmlns:html="http://www.w3.org/TR/REC-html40">\r<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">\r  <Created>' +
                (new Date).toISOString() + '</Created>\r</DocumentProperties>\r<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">\r  <AllowPNG/>\r</OfficeDocumentSettings>\r<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">\r  <WindowHeight>9000</WindowHeight>\r  <WindowWidth>13860</WindowWidth>\r  <WindowTopX>0</WindowTopX>\r  <WindowTopY>0</WindowTopY>\r  <ProtectStructure>False</ProtectStructure>\r  <ProtectWindows>False</ProtectWindows>\r</ExcelWorkbook>\r<Styles>\r  <Style ss:ID="Default" ss:Name="Normal">\r    <Alignment ss:Vertical="Bottom"/>\r    <Borders/>\r    <Font/>\r    <Interior/>\r    <NumberFormat/>\r    <Protection/>\r  </Style>\r  <Style ss:ID="rsp1">\r    <Alignment ss:Vertical="Center"/>\r  </Style>\r  <Style ss:ID="pct1">\r    <NumberFormat ss:Format="Percent"/>\r  </Style>\r</Styles>\r';
            for (r = 0; r < ra.length; r++) k += '<Worksheet ss:Name="' + F[r] + '" ss:RightToLeft="' + (a.mso.rtl ? "1" : "0") + '">\r' + ra[r], k = a.mso.rtl ? k + '<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">\r<DisplayRightToLeft/>\r</WorksheetOptions>\r' : k + '<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel"/>\r', k += "</Worksheet>\r";
            k += "</Workbook>\r";
            if ("string" === a.outputMode) return k;
            if ("base64" === a.outputMode) return K(k);
            M(k, a.fileName + ".xml", "application/xml", "utf-8", "base64", !1)
        } else if ("excel" ===
            a.type && "xlsx" === a.mso.fileFormat) {
            var aa = [], Fa = XLSX.utils.book_new();
            c(C).filter(function () {
                return I(c(this))
            }).each(function () {
                for (var b = c(this), d = {}, e = this.getElementsByTagName("tr"), g = {
                    s: {r: 0, c: 0},
                    e: {r: 0, c: 0}
                }, f = [], l, q = [], h = 0, k = 0, m, n, t, u, r, w = XLSX.SSF.get_table(); h < e.length && 1E7 > k; ++h) if (m = e[h], n = !1, "function" === typeof a.onIgnoreRow && (n = a.onIgnoreRow(c(m), h)), !0 !== n && (0 === a.ignoreRow.length || -1 === c.inArray(h, a.ignoreRow) && -1 === c.inArray(h - e.length, a.ignoreRow)) && !1 !== I(c(m))) {
                    var y = m.children,
                        C = 0;
                    for (m = 0; m < y.length; ++m) r = y[m], u = +O(r) || 1, C += u;
                    var A = 0;
                    for (m = n = 0; m < y.length; ++m) if (r = y[m], u = +O(r) || 1, l = m + A, !sa(c(r), C, l + (l < n ? n - l : 0))) {
                        A += u - 1;
                        for (l = 0; l < f.length; ++l) {
                            var v = f[l];
                            v.s.c == n && v.s.r <= k && k <= v.e.r && (n = v.e.c + 1, l = -1)
                        }
                        (0 < (t = +U(r)) || 1 < u) && f.push({s: {r: k, c: n}, e: {r: k + (t || 1) - 1, c: n + u - 1}});
                        var D = {type: ""};
                        l = E(r, h, m + A, D);
                        v = {t: "s", v: l};
                        var B = "";
                        if ("" !== c(r).attr("data-tableexport-cellformat")) {
                            var x = parseInt(c(r).attr("data-tableexport-xlsxformatid") || 0);
                            0 === x && "function" === typeof a.mso.xslx.formatId.numbers &&
                            (x = a.mso.xslx.formatId.numbers(c(r), h, m + A));
                            0 === x && "function" === typeof a.mso.xslx.formatId.date && (x = a.mso.xslx.formatId.date(c(r), h, m + A));
                            if (49 === x || "@" === x) B = "s"; else if ("number" === D.type || 0 < x && 14 > x || 36 < x && 41 > x || 48 === x) B = "n"; else if ("date" === D.type || 13 < x && 37 > x || 44 < x && 48 > x || 56 === x) B = "d"
                        } else B = "s";
                        if (null != l) if (0 === l.length) v.t = B || "z"; else if (0 !== l.trim().length && "s" !== B) if ("function" === D.type) v = {f: l}; else if ("TRUE" === l) v = {
                            t: "b",
                            v: !0
                        }; else if ("FALSE" === l) v = {t: "b", v: !1}; else if ("" === B && c(r).find("a").length) l =
                            "href" !== a.htmlHyperlink ? l : "", v = {f: '=HYPERLINK("' + c(r).find("a").attr("href") + (l.length ? '","' + l : "") + '")'}; else if ("n" === B || isFinite(Ca(l, a.numbers.output))) {
                            if (r = Ca(l, a.numbers.output), 0 === x && "function" !== typeof a.mso.xslx.formatId.numbers && (x = a.mso.xslx.formatId.numbers), isFinite(r) || isFinite(l)) v = {
                                t: "n",
                                v: isFinite(r) ? r : l,
                                z: "string" === typeof x ? x : x in w ? w[x] : "0.00"
                            }
                        } else if (!1 !== (r = La(l)) || "d" === B) 0 === x && "function" !== typeof a.mso.xslx.formatId.date && (x = a.mso.xslx.formatId.date), v = {
                            t: "d", v: !1 !== r ?
                                r : l, z: "string" === typeof x ? x : x in w ? w[x] : "m/d/yy"
                        };
                        d[na({c: n, r: k})] = v;
                        g.e.c < n && (g.e.c = n);
                        n += u
                    }
                    ++k
                }
                f.length && (d["!merges"] = f);
                q.length && (d["!rows"] = q);
                g.e.r = k - 1;
                d["!ref"] = oa(g);
                1E7 <= k && (d["!fullref"] = oa((g.e.r = e.length - h + k - 1, g)));
                e = "";
                "string" === typeof a.mso.worksheetName && a.mso.worksheetName.length ? e = a.mso.worksheetName + " " + (aa.length + 1) : "undefined" !== typeof a.mso.worksheetName[aa.length] && (e = a.mso.worksheetName[aa.length]);
                e.length || (e = b.find("caption").text() || "");
                e.length || (e = "Table " + (aa.length +
                    1));
                e = c.trim(e.replace(/[\\\/[\]*:?'"]/g, "").substring(0, 31));
                aa.push(e);
                XLSX.utils.book_append_sheet(Fa, d, e)
            });
            k = XLSX.write(Fa, {type: "binary", bookType: a.mso.fileFormat, bookSST: !1});
            M(Oa(k), a.fileName + "." + a.mso.fileFormat, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "UTF-8", "", !1)
        } else if ("excel" === a.type || "xls" === a.type || "word" === a.type || "doc" === a.type) {
            k = "excel" === a.type || "xls" === a.type ? "excel" : "word";
            r = "excel" === k ? "xls" : "doc";
            m = 'xmlns:x="urn:schemas-microsoft-com:office:' +
                k + '"';
            var H = "", ba = "";
            c(C).filter(function () {
                return I(c(this))
            }).each(function () {
                var b = c(this);
                "" === ba && (ba = a.mso.worksheetName || b.find("caption").text() || "Table", ba = c.trim(ba.replace(/[\\\/[\]*:?'"]/g, "").substring(0, 31)));
                !1 === a.exportHiddenCells && (J = b.find("tr, th, td").filter(":hidden"), V = 0 < J.length);
                n = 0;
                G = [];
                T = S(this);
                H += "<table><thead>";
                u = y(b);
                c(u).each(function () {
                    var b = c(this);
                    t = "";
                    B(this, "th,td", n, u.length, function (c, d, f) {
                        if (null !== c) {
                            var e = "";
                            t += "<th";
                            if (a.mso.styles.length) {
                                var g = document.defaultView.getComputedStyle(c,
                                    null), h = document.defaultView.getComputedStyle(b[0], null), k;
                                for (k in a.mso.styles) {
                                    var m = g[a.mso.styles[k]];
                                    "" === m && (m = h[a.mso.styles[k]]);
                                    "" !== m && "0px none rgb(0, 0, 0)" !== m && "rgba(0, 0, 0, 0)" !== m && (e += "" === e ? 'style="' : ";", e += a.mso.styles[k] + ":" + m)
                                }
                            }
                            "" !== e && (t += " " + e + '"');
                            e = O(c);
                            0 < e && (t += ' colspan="' + e + '"');
                            e = U(c);
                            0 < e && (t += ' rowspan="' + e + '"');
                            t += ">" + E(c, d, f) + "</th>"
                        }
                    });
                    0 < t.length && (H += "<tr>" + t + "</tr>");
                    n++
                });
                H += "</thead><tbody>";
                w = v(b);
                c(w).each(function () {
                    var b = c(this);
                    t = "";
                    B(this, "td,th", n, u.length +
                        w.length, function (d, g, f) {
                        if (null !== d) {
                            var e = E(d, g, f), q = "", h = c(d).attr("data-tableexport-msonumberformat");
                            "undefined" === typeof h && "function" === typeof a.mso.onMsoNumberFormat && (h = a.mso.onMsoNumberFormat(d, g, f));
                            "undefined" !== typeof h && "" !== h && (q = "style=\"mso-number-format:'" + h + "'");
                            if (a.mso.styles.length) {
                                g = document.defaultView.getComputedStyle(d, null);
                                f = document.defaultView.getComputedStyle(b[0], null);
                                for (var k in a.mso.styles) h = g[a.mso.styles[k]], "" === h && (h = f[a.mso.styles[k]]), "" !== h && "0px none rgb(0, 0, 0)" !==
                                h && "rgba(0, 0, 0, 0)" !== h && (q += "" === q ? 'style="' : ";", q += a.mso.styles[k] + ":" + h)
                            }
                            t += "<td";
                            "" !== q && (t += " " + q + '"');
                            q = O(d);
                            0 < q && (t += ' colspan="' + q + '"');
                            d = U(d);
                            0 < d && (t += ' rowspan="' + d + '"');
                            "string" === typeof e && "" !== e && (e = Aa(e), e = e.replace(/\n/g, "<br>"));
                            t += ">" + e + "</td>"
                        }
                    });
                    0 < t.length && (H += "<tr>" + t + "</tr>");
                    n++
                });
                a.displayTableName && (H += "<tr><td></td></tr><tr><td></td></tr><tr><td>" + E(c("<p>" + a.tableName + "</p>")) + "</td></tr>");
                H += "</tbody></table>"
            });
            m = '<html xmlns:o="urn:schemas-microsoft-com:office:office" ' +
                m + ' xmlns="http://www.w3.org/TR/REC-html40">' + ('<meta http-equiv="content-type" content="application/vnd.ms-' + k + '; charset=UTF-8">');
            m += "<head>";
            "excel" === k && (m += "\x3c!--[if gte mso 9]>", m += "<xml>", m += "<x:ExcelWorkbook>", m += "<x:ExcelWorksheets>", m += "<x:ExcelWorksheet>", m += "<x:Name>", m += ba, m += "</x:Name>", m += "<x:WorksheetOptions>", m += "<x:DisplayGridlines/>", a.mso.rtl && (m += "<x:DisplayRightToLeft/>"), m += "</x:WorksheetOptions>", m += "</x:ExcelWorksheet>", m += "</x:ExcelWorksheets>", m += "</x:ExcelWorkbook>",
                m += "</xml>", m += "<![endif]--\x3e");
            m += "<style>";
            m += "@page { size:" + a.mso.pageOrientation + "; mso-page-orientation:" + a.mso.pageOrientation + "; }";
            m += "@page Section1 {size:" + N[a.mso.pageFormat][0] + "pt " + N[a.mso.pageFormat][1] + "pt";
            m += "; margin:1.0in 1.25in 1.0in 1.25in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-paper-source:0;}";
            m += "div.Section1 {page:Section1;}";
            m += "@page Section2 {size:" + N[a.mso.pageFormat][1] + "pt " + N[a.mso.pageFormat][0] + "pt";
            m += ";mso-page-orientation:" + a.mso.pageOrientation +
                ";margin:1.25in 1.0in 1.25in 1.0in;mso-header-margin:.5in;mso-footer-margin:.5in;mso-paper-source:0;}";
            m += "div.Section2 {page:Section2;}";
            m += "br {mso-data-placement:same-cell;}";
            m += "</style>";
            m += "</head>";
            m += "<body>";
            m += '<div class="Section' + ("landscape" === a.mso.pageOrientation ? "2" : "1") + '">';
            m += H;
            m += "</div>";
            m += "</body>";
            m += "</html>";
            if ("string" === a.outputMode) return m;
            if ("base64" === a.outputMode) return K(m);
            M(m, a.fileName + "." + r, "application/vnd.ms-" + k, "", "base64", !1)
        } else if ("png" === a.type) html2canvas(c(C)[0]).then(function (b) {
            b =
                b.toDataURL();
            for (var c = atob(b.substring(22)), e = new ArrayBuffer(c.length), g = new Uint8Array(e), f = 0; f < c.length; f++) g[f] = c.charCodeAt(f);
            if ("string" === a.outputMode) return c;
            if ("base64" === a.outputMode) return K(b);
            "window" === a.outputMode ? window.open(b) : M(e, a.fileName + ".png", "image/png", "", "", !1)
        }); else if ("pdf" === a.type) if (!0 === a.pdfmake.enabled) {
            k = [];
            var Ga = [];
            n = 0;
            G = [];
            r = function (a, d, e) {
                var b = 0;
                c(a).each(function () {
                    var a = [];
                    B(this, d, n, e, function (b, c, d) {
                        if ("undefined" !== typeof b && null !== b) {
                            var e = O(b),
                                f = U(b);
                            b = E(b, c, d) || " ";
                            1 < e || 1 < f ? a.push({colSpan: e || 1, rowSpan: f || 1, text: b}) : a.push(b)
                        } else a.push(" ")
                    });
                    a.length && Ga.push(a);
                    b < a.length && (b = a.length);
                    n++
                });
                return b
            };
            u = y(c(this));
            m = r(u, "th,td", u.length);
            for (R = k.length; R < m; R++) k.push("*");
            w = v(c(this));
            r(w, "th,td", u.length + w.length);
            k = {content: [{table: {headerRows: u.length, widths: k, body: Ga}}]};
            c.extend(!0, k, a.pdfmake.docDefinition);
            pdfMake.fonts = {
                Roboto: {
                    normal: "Roboto-Regular.ttf",
                    bold: "Roboto-Medium.ttf",
                    italics: "Roboto-Italic.ttf",
                    bolditalics: "Roboto-MediumItalic.ttf"
                }
            };
            c.extend(!0, pdfMake.fonts, a.pdfmake.fonts);
            pdfMake.createPdf(k).getBuffer(function (b) {
                M(b, a.fileName + ".pdf", "application/pdf", "", "", !1)
            })
        } else if (!1 === a.jspdf.autotable) {
            k = {
                dim: {w: fa(c(C).first().get(0), "width", "mm"), h: fa(c(C).first().get(0), "height", "mm")},
                pagesplit: !1
            };
            var Ha = new jsPDF(a.jspdf.orientation, a.jspdf.unit, a.jspdf.format);
            Ha.addHTML(c(C).first(), a.jspdf.margins.left, a.jspdf.margins.top, k, function () {
                ua(Ha, !1)
            })
        } else {
            var g = a.jspdf.autotable.tableExport;
            if ("string" === typeof a.jspdf.format &&
                "bestfit" === a.jspdf.format.toLowerCase()) {
                var ia = "", ca = "", Ia = 0;
                c(C).each(function () {
                    if (I(c(this))) {
                        var a = fa(c(this).get(0), "width", "pt");
                        if (a > Ia) {
                            a > N.a0[0] && (ia = "a0", ca = "l");
                            for (var d in N) N.hasOwnProperty(d) && N[d][1] > a && (ia = d, ca = "l", N[d][0] > a && (ca = "p"));
                            Ia = a
                        }
                    }
                });
                a.jspdf.format = "" === ia ? "a4" : ia;
                a.jspdf.orientation = "" === ca ? "w" : ca
            }
            if (null == g.doc && (g.doc = new jsPDF(a.jspdf.orientation, a.jspdf.unit, a.jspdf.format), g.wScaleFactor = 1, g.hScaleFactor = 1, "function" === typeof a.jspdf.onDocCreated)) a.jspdf.onDocCreated(g.doc);
            !0 === g.outputImages && (g.images = {});
            "undefined" !== typeof g.images && (c(C).filter(function () {
                return I(c(this))
            }).each(function () {
                var b = 0;
                G = [];
                !1 === a.exportHiddenCells && (J = c(this).find("tr, th, td").filter(":hidden"), V = 0 < J.length);
                u = y(c(this));
                w = v(c(this));
                c(w).each(function () {
                    B(this, "td,th", u.length + b, u.length + w.length, function (a) {
                        wa(a, c(a).children(), g)
                    });
                    b++
                })
            }), u = [], w = []);
            Ka(g, function () {
                c(C).filter(function () {
                    return I(c(this))
                }).each(function () {
                    var b;
                    n = 0;
                    G = [];
                    !1 === a.exportHiddenCells && (J = c(this).find("tr, th, td").filter(":hidden"),
                        V = 0 < J.length);
                    T = S(this);
                    g.columns = [];
                    g.rows = [];
                    g.teCells = {};
                    if ("function" === typeof g.onTable && !1 === g.onTable(c(this), a)) return !0;
                    a.jspdf.autotable.tableExport = null;
                    var d = c.extend(!0, {}, a.jspdf.autotable);
                    a.jspdf.autotable.tableExport = g;
                    d.margin = {};
                    c.extend(!0, d.margin, a.jspdf.margins);
                    d.tableExport = g;
                    "function" !== typeof d.beforePageContent && (d.beforePageContent = function (a) {
                        if (1 === a.pageCount) {
                            var b = a.table.rows.concat(a.table.headerRow);
                            c.each(b, function () {
                                0 < this.height && (this.height += (2 - 1.15) / 2 *
                                    this.styles.fontSize, a.table.height += (2 - 1.15) / 2 * this.styles.fontSize)
                            })
                        }
                    });
                    "function" !== typeof d.createdHeaderCell && (d.createdHeaderCell = function (a, b) {
                        a.styles = c.extend({}, b.row.styles);
                        if ("undefined" !== typeof g.columns[b.column.dataKey]) {
                            var e = g.columns[b.column.dataKey];
                            if ("undefined" !== typeof e.rect) {
                                a.contentWidth = e.rect.width;
                                if ("undefined" === typeof g.heightRatio || 0 === g.heightRatio) {
                                    var f = b.row.raw[b.column.dataKey].rowspan ? b.row.raw[b.column.dataKey].rect.height / b.row.raw[b.column.dataKey].rowspan :
                                        b.row.raw[b.column.dataKey].rect.height;
                                    g.heightRatio = a.styles.rowHeight / f
                                }
                                f = b.row.raw[b.column.dataKey].rect.height * g.heightRatio;
                                f > a.styles.rowHeight && (a.styles.rowHeight = f)
                            }
                            a.styles.halign = "inherit" === d.headerStyles.halign ? "center" : d.headerStyles.halign;
                            a.styles.valign = d.headerStyles.valign;
                            "undefined" !== typeof e.style && !0 !== e.style.hidden && ("inherit" === d.headerStyles.halign && (a.styles.halign = e.style.align), "inherit" === d.styles.fillColor && (a.styles.fillColor = e.style.bcolor), "inherit" === d.styles.textColor &&
                            (a.styles.textColor = e.style.color), "inherit" === d.styles.fontStyle && (a.styles.fontStyle = e.style.fstyle))
                        }
                    });
                    "function" !== typeof d.createdCell && (d.createdCell = function (a, b) {
                        b = g.teCells[b.row.index + ":" + b.column.dataKey];
                        a.styles.halign = "inherit" === d.styles.halign ? "center" : d.styles.halign;
                        a.styles.valign = d.styles.valign;
                        "undefined" !== typeof b && "undefined" !== typeof b.style && !0 !== b.style.hidden && ("inherit" === d.styles.halign && (a.styles.halign = b.style.align), "inherit" === d.styles.fillColor && (a.styles.fillColor =
                            b.style.bcolor), "inherit" === d.styles.textColor && (a.styles.textColor = b.style.color), "inherit" === d.styles.fontStyle && (a.styles.fontStyle = b.style.fstyle))
                    });
                    "function" !== typeof d.drawHeaderCell && (d.drawHeaderCell = function (a, b) {
                        var c = g.columns[b.column.dataKey];
                        return (!0 !== c.style.hasOwnProperty("hidden") || !0 !== c.style.hidden) && 0 <= c.rowIndex ? va(a, b, c) : !1
                    });
                    "function" !== typeof d.drawCell && (d.drawCell = function (a, b) {
                        var d = g.teCells[b.row.index + ":" + b.column.dataKey];
                        if (!0 !== ("undefined" !== typeof d && d.isCanvas)) va(a,
                            b, d) && (g.doc.rect(a.x, a.y, a.width, a.height, a.styles.fillStyle), "undefined" === typeof d || "undefined" !== typeof d.hasUserDefText && !0 === d.hasUserDefText || "undefined" === typeof d.elements || !d.elements.length ? za(a, {}, g) : (b = a.height / d.rect.height, b > g.hScaleFactor && (g.hScaleFactor = b), g.wScaleFactor = a.width / d.rect.width, b = a.textPos.y, ya(a, d.elements, g), a.textPos.y = b, za(a, d.elements, g))); else {
                            d = d.elements[0];
                            var e = c(d).attr("data-tableexport-canvas"), f = d.getBoundingClientRect();
                            a.width = f.width * g.wScaleFactor;
                            a.height = f.height * g.hScaleFactor;
                            b.row.height = a.height;
                            ta(a, d, e, g)
                        }
                        return !1
                    });
                    g.headerrows = [];
                    u = y(c(this));
                    c(u).each(function () {
                        b = 0;
                        g.headerrows[n] = [];
                        B(this, "th,td", n, u.length, function (a, c, d) {
                            var e = Ba(a);
                            e.title = E(a, c, d);
                            e.key = b++;
                            e.rowIndex = n;
                            g.headerrows[n].push(e)
                        });
                        n++
                    });
                    if (0 < n) for (var e = n - 1; 0 <= e;) c.each(g.headerrows[e], function () {
                        var a = this;
                        0 < e && null === this.rect && (a = g.headerrows[e - 1][this.key]);
                        null !== a && 0 <= a.rowIndex && (!0 !== a.style.hasOwnProperty("hidden") || !0 !== a.style.hidden) && g.columns.push(a)
                    }),
                        e = 0 < g.columns.length ? -1 : e - 1;
                    var k = 0;
                    w = [];
                    w = v(c(this));
                    c(w).each(function () {
                        var a = [];
                        b = 0;
                        B(this, "td,th", n, u.length + w.length, function (d, e, f) {
                            if ("undefined" === typeof g.columns[b]) {
                                var h = {title: "", key: b, style: {hidden: !0}};
                                g.columns.push(h)
                            }
                            a.push(E(d, e, f));
                            "undefined" !== typeof d && null !== d ? (h = Ba(d), h.isCanvas = d.hasAttribute("data-tableexport-canvas"), h.elements = h.isCanvas ? c(d) : c(d).children(), "undefined" !== typeof c(d).data("teUserDefText") && (h.hasUserDefText = !0)) : (h = c.extend(!0, {}, g.teCells[k + ":" + (b - 1)]),
                                h.colspan = -1);
                            g.teCells[k + ":" + b++] = h
                        });
                        a.length && (g.rows.push(a), k++);
                        n++
                    });
                    if ("function" === typeof g.onBeforeAutotable) g.onBeforeAutotable(c(this), g.columns, g.rows, d);
                    g.doc.autoTable(g.columns, g.rows, d);
                    if ("function" === typeof g.onAfterAutotable) g.onAfterAutotable(c(this), d);
                    a.jspdf.autotable.startY = g.doc.autoTableEndPosY() + d.margin.top
                });
                ua(g.doc, "undefined" !== typeof g.images && !1 === jQuery.isEmptyObject(g.images));
                "undefined" !== typeof g.headerrows && (g.headerrows.length = 0);
                "undefined" !== typeof g.columns &&
                (g.columns.length = 0);
                "undefined" !== typeof g.rows && (g.rows.length = 0);
                delete g.doc;
                g.doc = null
            })
        }
        if ("function" === typeof a.onTableExportEnd) a.onTableExportEnd();
        return this
    }
})(jQuery);